what should software architect know